package root.repositorios;

import java.util.ArrayList;
import java.util.List;


import root.plumbum2.Emprestimo;
import root.plumbum2.VerificadorDadosEntrada;


public class RepositorioEmprestimo implements RepositorioInterface<Emprestimo>{
	private List<Emprestimo> listaEmprestador = new ArrayList<Emprestimo>();
	private List<Emprestimo> listaBeneficiado= new ArrayList<Emprestimo>();
	
	
	@Override
	public void insert(Emprestimo o) {
		
	}
	public void insertEmprestador(Emprestimo o) {		
			this.listaEmprestador.add(o);
	}
	public void insertBeneficiado(Emprestimo o) {
		this.listaBeneficiado.add(o);
	}

	@Override
	public void remove(Emprestimo o) {
		for(Emprestimo e:this.listaEmprestador){
			if(e.getIdEmprestimo().equals(o.getIdEmprestimo())){
				e=null;
				//this.listaEmprestador.remove(e);
			}
		}for(Emprestimo e:this.listaBeneficiado){
			if(e.getIdEmprestimo().equals(o.getIdEmprestimo())){
				e=null;
				//this.listaBeneficiado.remove(e);
			}
		}
//		if (tipo.equals("emprestador")) {
//			this.listaEmprestador.remove(o);
//		} else {
//			this.listaBeneficiado.remove(o);
//		}
	}

	@Override
	public Emprestimo search(Emprestimo o) {
		Emprestimo retorno=null;
		
		List<Emprestimo> listaEmprestimo = new ArrayList<Emprestimo>();
		listaEmprestimo.addAll(this.listaBeneficiado);
		listaEmprestimo.addAll(this.listaEmprestador);
		
		
		for(Emprestimo e: listaEmprestimo){
			if(e.getIdEmprestimo().equals(o.getIdEmprestimo())){
				retorno =o;
			}
		}
		
		
		return retorno;
	}

	public Emprestimo search(String idEmprestimo) throws Exception {
		if(!VerificadorDadosEntrada.stringValida(idEmprestimo))throw new Exception("Identificador da requisição de empréstimo é inválido");
		Emprestimo emprestimo = null;
		List<Emprestimo> listaEmprestimo = new ArrayList<Emprestimo>();
		listaEmprestimo.addAll(this.listaBeneficiado);
		listaEmprestimo.addAll(this.listaEmprestador);
		
		for (Emprestimo e : listaEmprestimo) {
			if (e.getIdEmprestimo().equalsIgnoreCase(idEmprestimo)){
				emprestimo = e;
				break;
			}
		}
		
		
		return emprestimo;
	}
	
	@Override
	public List<Emprestimo> getRepositorio() {
		
		List<Emprestimo> listaEmprestimo = new ArrayList<Emprestimo>();
		listaEmprestimo.addAll(this.listaEmprestador);
		listaEmprestimo.addAll(this.listaBeneficiado);
		
		return listaEmprestimo;
	}
	
	public List<Emprestimo> getListaEmpBeneficiado(){
		return this.listaBeneficiado;
	}
	public List<Emprestimo> getListaEmpEmprestador(){
		return this.listaEmprestador;
	}
	
	
	

}
